class Solution {
public:
    string tel[11] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};//使用这个数组
    //得到每一个数字对应的字符
    vector<string> ret;
    string path;
    void dfs(string& digits,int index)
    {
        if(index>=digits.size())
        {
            ret.push_back(path);
            return;
        }
        int nums = digits[index] - '0';//得到这个位置应该能够填入的值为这些
        string telnum = tel[nums];//这个位置能够填入的字符串
        for(int i = 0;i<telnum.size();i++)
        {
            path.push_back(telnum[i]);//选贼一个字符串进行填入
            dfs(digits,index+1);//递归下一个字符串的传入
            path.pop_back();//恢复现场
        }
    }
    vector<string> letterCombinations(string digits) {
        if(digits == "")
        {
            return ret;
        }//处理没有号码的情况
        dfs(digits,0);
        return ret;
    }
};